
import { storeToRefs } from 'pinia';
import { useAuthSotre } from '../sotre/authStore';
import router from './index'
import { useMenuStore } from '../sotre/useMenuSotre';
// 使用 import.meta.glob 动态导入所有视图组件
const modules = import.meta.glob("../views/**/**.vue");

//是否添加过动态路由
let isAddRouter = false;

// 在每次路由跳转前执行的钩子函数
router.beforeEach(async (to, from) => {

  console.log("isAddRouter",isAddRouter);
  

    // 如果目标路径是登录页面，则直接返回 true，允许访问
    if (to.path === '/login') {
      return true
    }
    // 获取 authStore 实例，并从其中获取 token 值
    const authStore = useAuthSotre();
    const { token } = storeToRefs(authStore);
   
    // 如果没有 token，则重定向到登录页面
    if (!token.value) {
      return '/login'
    }
  
    // let routerLength = router.getRoutes().length;

    // if(routerLength>3) return true;

    // 如果已经添加过动态路由，则直接返回 true，允许访问
    if(isAddRouter)  return true;
    isAddRouter=true;

    // 获取 menuStore 实例，并调用 getMenus 方法获取菜单数据
    const menuStore = useMenuStore();
    await menuStore.getMenus();

    console.log("  menuStore.routerMenus",  menuStore.routerMenus);


    
    // 遍历菜单数据，动态添加路由
    menuStore.routerMenus.forEach(item => {
  
      item.children?.forEach(child => {

        console.log(`/${item.url}/${child.url}`,`../views/${item.url}/${child.pathName}.vue`);
 
        
        // 动态导入对应的视图组件
        let component = modules[`../views/${item.url}/${child.pathName}.vue`];
         // 如果组件不存在，则使用 404 页面作为默认组件
        if (!component) {
          component = modules[`../../views/404.vue`];
        }

        // 添加动态路由
        router.addRoute('Home', {
          path: `/${item.url}/${child.url}`,
          name: child.url + child.id,
          component: component
  
        })
  
  
      })
  
  
    })
  
    return to.fullPath;

  
  })